package cn.jdy.framework.util;

import java.io.Serializable;

/**
 * 清理nginx缓存 ，通过nginx_purge模块
 * @author 光涛
 */
public class NginxPurgeCacheUtil {
  
  /**
   * 说明：http://qwe.com.cn/news/8.html<br>
   * 清理缓存的路径是：http://qwe.com.cn/purge/news/8.html
   * NginxPurgeCacheUtil.purge("news/8.html");
   * @param path 对应的文件访问路径
   */
	public static void purge(final String path) {
		new Thread() {
			public void run() {
				//从全局配置中获取所有nginx服务器地址
				String[] hosts = PropertyUtil.getProInfo("private", "nginxHosts").split(",");
 
		    	try {
		    		StringBuffer url = new StringBuffer("http://");
		    		for(String host : hosts) {
		    		  url.append(host).append("/purge/").append(path);
		    		  HttpUtil.sendGet(url.toString(), "utf-8");
		    		}
				}catch(Exception e) {
					e.printStackTrace();
				}
			}
		}.start();
	}
	
	
	/**
	 * 根据业务类型清理缓存<br>
	 * 0   首页 /index.html<br>
   * 1 新闻列表  /news/{id}.html<br>
   * 2 新闻详情 /news/show-{id}.html<br>
   * 3 产品列表 /product/{id}.html<br>
   * 4 产品详情 /product/show-{id}.html<br>
   * 5 帮助列表 /help/{id}.html<br>
   * 6 帮助详情 /help/show-{id}.html<br>
	 * @param type 业务类型
	 * @param id 栏目id/文章id
	 */
	public static void purge(int type,Serializable id) {
	  // 预定义 Windows下为开发环境 不涉及清理缓存的操作
	  if(!System.getProperty("os.name").startsWith("Windows")){
  	  String path = "";
  	  switch (type) {
      case 0:
        path = "index.html";
        break;
      case 1:
        path = String.format("/news/%s.html", id);
        break;
      case 2:
        path = String.format("/news/show-%s.html", id);
        break;
      case 3:
        path = String.format("/product/%s.html", id);
        break;
      case 4:
        path = String.format("/product/show-%s.html", id);
        break;
      case 5:
        path = String.format("/help/%s.html", id);
        break;
      case 6:
        path = String.format("/help/show-%s.html", id);
        break;
      } 
  	  purge(path);
  	}
	}
}
